import csv
import json
import re
import os
from openai import OpenAI



# 设置阿里云百炼 API Key
os.environ["DASHSCOPE_API_KEY"] = "sk-5c6689dccd074a739c78ef7d1d780148"


def ask_llm_upstream(prompt):
    try:
        # 初始化 OpenAI 兼容客户端（用于阿里云百炼 DashScope）
        client = OpenAI(
            api_key=os.getenv("DASHSCOPE_API_KEY"),
            base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
        )

        # 请求 Chat Completion
        completion = client.chat.completions.create(
            model="deepseek-v3",
            messages=[
                {"role": "system", "content": '''
                
                    你需要判断输入的内容，是否包含以下的例子 ：
                    
                    1.类似于'c25033115350080514567816 bd'中有一串的编号数字，如'25033115350080514567816'
                    
                    2.类似于'Password 1103@1535 2100000202508052028100001 这笔冲正了吗',包含有'Password 1103@1535'这样的字眼，关键词是'Password'
                    
                    如果有上面的情况，则返回'1',单纯返回数字1，如果  不是上面的情况，则返回'0',禁止返回其余的情况，
                    
                    禁止返回其他的内容，禁止输入其他的信息

                '''},
                {"role": "user", "content": prompt},
            ]
        )
        print("completion.choices[0].message.content",completion.choices[0].message.content)
        return completion.choices[0].message.content
    except Exception as e:
        print("LLM Error:", e)
        return "抱歉，AI 处理时出现错误。"


def convert_csv_to_json(csv_file_path):
    # 读取CSV文件
    with open(csv_file_path, 'r', encoding='utf-8') as file:
        reader = csv.DictReader(file)
        data = list(reader)

    # 转换数据格式
    converted_data = []
    for row in data:
        # 确保问题和答案都不为空
        if row['question_text'] and row['answer_text']:
            # 创建对话对：包含用户问题和带结束标记的助手回答
            conversation_pair = [{"role": "user", "content": row['question_text']},{"role": "assistant", "content": f"{row['answer_text']}<|im_end|>"}]
            print("conversation_pair", conversation_pair[0]['content'])
            m = re.match(r'^(\d)', conversation_pair[0]['content'])
            if m:
                continue
            else:
                result=ask_llm_upstream(conversation_pair[0]['content'])
                if result=='1':
                    continue
                else:
                    converted_data.append(conversation_pair)
    return converted_data


# 使用示例
csv_file_path = 'D:\\yuanbei\\客服问答机器人需求表\\清洗数据\\data_process\\data_process_b\\12298\\qa_pairs.csv'  # 替换为你的CSV文件路径
json_data = convert_csv_to_json(csv_file_path)

# 保存为JSON文件
# with open(
#         'D:\\yuanbei\\客服问答机器人需求表\\清洗数据\\30056-TOPSLOT&Ablepay🇵🇰EP6.0-JC4.5+2+ChatExport_2025-10-03\\train_data1.json',
#         'w', encoding='utf-8') as json_file:
#     json.dump(json_data, json_file, ensure_ascii=False, indent=2)


# 直接保存为文本内容（不使用json.dump）
output_path = 'D:\\yuanbei\\客服问答机器人需求表\\清洗数据\\data_process\\data_process_b\\12298\\train_data3.json'
with open(output_path, 'w', encoding='utf-8') as f:
    # 写入开头
    f.write("[\n")
    # 写入每个对话项
    for i, item in enumerate(json_data):
        # 转换为字符串
        item_str = json.dumps(item, ensure_ascii=False)
        # 最后一项不加逗号
        if i == len(json_data) - 1:
            f.write(f"    {item_str}\n")
        else:
            f.write(f"    {item_str},\n")
    # 写入结尾
    f.write("]")


print("转换完成，数据已保存为 train_data3.json")
